from sqlalchemy.orm import Session
from . import models, schemas



def get_todo(db: Session, todo_id: int):
    """根据ID获取单个待办事项"""
    return db.query(models.Todo).filter(models.Todo.id == todo_id).first()


def create_todo(db: Session, todo: schemas.TodoBase):
    """创建一个新的待办事项"""
    db_todo = models.Todo(title=todo.title, description=todo.description)
    db.add(db_todo)
    db.commit()
    db.refresh(db_todo)
    return db_todo

def update_todo(db: Session, todo_id: int, todo_update: schemas.TodoUpdate):
    """更新一个待办事项"""
    db_todo = get_todo(db, todo_id=todo_id)
    if db_todo:
        # 获取 Pydantic 模型中已设置的字段
        update_data = todo_update.model_dump(exclude_unset=True)
        for key, value in update_data.items():
            setattr(db_todo, key, value)
        db.commit()
        db.refresh(db_todo)
    return db_todo

def delete_todo(db: Session, todo_id: int):
    """删除一个待办事项"""
    db_todo = get_todo(db, todo_id=todo_id)
    if db_todo:
        db.delete(db_todo)
        db.commit()
    return db_todo


